// Το control panel είναι η στήλη εργαλείων που εμφανίζεται σε κεντρικό
// σημείο της εφαρμογής. Κάνοντας κλικ σ' αυτά τα εργαλεία επιτελούμε
// πληθώρα εργασιών που σχετίζονται τόσο με το παιχνίδι, όσο και με
// άλλες παραμέτρους που ρυθμίζουν τη γενικότερη λειτουργία της εφαρμογής.
//
// Τα εργαλεία του control panel χωρίζονται σε ομάδες καθώς είναι πάρα
// πολλά και η συνεχής παρουσία τους στην επιφάνεια εργασίας της εφαρμογής
// αποφεύγεται με το χωρισμό των εργαλείων αυτών σε ενότητες. Υπάρχει μια
// βασική ενότητα και άλλες που περιέχουν λιγότερο βασικά εργαλεία της
// εφαρμογής. Στην κορυφή του control panel υπάρχει εργαλείο εναλλαγής
// ομάδων εργαλείων με το οποίο εναλλάσουμε τις ομάδες αυτές, ενώ σε κάθε
// δευτερεύουσα ομάδα εργαλείων εμφανίζονται πάνω και κάτω εργαλεία
// επιστροφής στη βασική ομάδα.

// Όλα τα προγραμματιστικά αντικείμενα που αφορούν στο control panel
// υιοθετούνται από το global object "Prefadoros.cpanel".

Prefadoros.cpanel = {
	// Η property "omada" δείχνει ποια είναι η τρέχουσα ομάδα εργαλείων.

	omada: 'basika',

	// Η property "flags" περιέχει σειρά από flags που δείχνουν πράγματα
	// σχετικά με την τρέχουσα κατάσταση διαφόρων στοιχείων του control
	// panel και όχι μόνο.

	flags: {
		fullView: false,
		emoticon: false,
		chat: false,
		niofertos: true,
		theatis: true,
		funchat: null,
	},
};

// Το "toolList" περιέχει όλα τα εργαλεία του control panel, ανεξαρτήτως ομάδας.
// Κάθε εργαλείο έχει τα εξής χαρακτηριστικά:
//
//	t	Περιγραφή εργαλείου, εμφανίζεται ως title στο αντίστοιχο εικονίδιο.
//
//	i	Το image source της εικόνας του αντίστοιχου εικονιδίου.
//
//	r	Προαιρετική property που μπορεί να πάρει τιμές 180, 90 κλπ. Προκαλεί
//		ανάλογη στροφή του αντίστοιχου εικονιδίου.
//
//	a	Πρόκειται για function που θα κληθεί όταν κάνουμε κλικ στο σχετικό
//		εικονίδιο.
//
//	c	Προαιρετική property. Πρόκειται για boolean function που αν επιστρέφει
//		false, δεν εμφανίζεται το αντίστοιχο εργαλείο. Αν δεν υπάρχει function,
//		ή επιστρέφει true, τότε το εργαλείο εμφανίζεται στο control panel.
//
//	h	Αν η property "h" είναι true, τότε έχουμε περίγραμμα υπόδειξης.

Prefadoros.cpanel.toolList = {
	// Εργαλείο εναλλαγής ομάδων εργαλείων. Εμφανίζεται πάντα στην κορυφή του
	// control panel και σκοπό έχει την εμφάνιση της επόμενης σειράς εργαλείων.

	enalagi: {
		t: 'Εναλλαγή εργαλείων',
		i: 'images/cpanel/4Balls.png',
		a: function() {
			var omada;
			switch (Prefadoros.cpanel.omada) {
			case 'basika':
				omada = 'deftera';
				break;
			case 'deftera':
				omada = 'stisimo';
				break;
			case 'stisimo':
				omada = 'settings';
				break;
			default:
				omada = 'basika';
				break;
			}
			Prefadoros.cpanel.omadaDixe(omada);
		}
	},

	// Το εργαλείο "basika" είναι επουσιώδες και σκοπό έχει την επαναφορά της ομάδας
	// βασικών εργαλείων. Εμφανίζεται μόνο στις δευτερεύουσες σειρές εργαλείων, ακριβώς
	// κάτω από το εγραλείο εναλλαγής ομάδας εργαλείων.

	basika: {
		t: 'Βασικά εργαλεία',
		i: 'images/misc/mazema.png',
		a: function() {
			Prefadoros.cpanel.omadaDixe('basika');
		}
	},

	// Το εργαλείο "akisab" είναι παρόμοιο με το "basika" με μόνη διαφορά ότι
	// εμφανίζεται στο κάτω μέρος του control panel.

	akisab: {
		t: 'Βασικά εργαλεία',
		i: 'images/misc/mazema.png',
		r: 180,
		a: function() { Prefadoros.cpanel.omadaDixe('basika'); }
	},

	// Το εργαλείο "emoticonShow" προκαλεί στένεμα της περιοχής "pss", δηλαδή του
	// δεξιού τμήματος της επιφάνειας εργασίας της εφαρμογής, στο οποίο εμφανίζονται
	// προσκλήσεις, σχέσεις και συζητήσεις. Η περιοχή στενεύει ώστε να εμφανιστεί
	// στήλη με emoticons τα οποία μπορούμε να κάνουμε κλικ και να τα εμφυτεύουμε
	// στη συζήτηση.

	emoticonShow: {
		t: 'Εμφάνιση emoticons',
		i: 'images/emoticons/set0/xamogelo.png',
		a: function(i) {
			var
			src = i.src,
			oc = i.getAttribute('onclick');

			$(i).working();
			i.setAttribute('onclick', '');
			$('#emoticonColumn').css({
				width: '1px',
				'max-width': '1px',
				display: 'table-cell'
			});
			if ($('.pssHeaderInput').first().outerWidth() < 400) Prefadoros.pss.mazema();
			$('#emoticonColumn').animate({
				width: '35px',
				'max-width': '35px'
			}, 100, function() {
				i.style.display = 'none';
				i.src = src;
				i.setAttribute('onclick', oc);
				$('#CPemoticonHide').css('display', 'block');
				Prefadoros.pss.aploma();
				Prefadoros.cpanel.flags.emoticon = true;
			});
		},
		c: function() { return(!Prefadoros.cpanel.flags.emoticon); }
	},

	// Το εργαλείο "emoticonHide" εκτελεί την αντίστροφη λειτουργία, δηλαδή αποκρύπτει
	// τη στήλη των emoticons και φαρδαίνει αντίστοιχα την περιοχή "pss".

	emoticonHide: {
		t: 'Απόκρυψη emoticons',
		i: 'images/emoticons/set0/alien.png',
		// Η συγκεκριμένη μέθοδος καλείται και μέσω της βασικής στήλης
		// των emoticons, οπότε υπάρχει περίπτωση να μην είναι διαθέσιμο
		// το σχετικό εικονίδιο στο control panel. Σ' αυτή την περίπτωση
		// έχει περαστεί null image παράμετρος.
		a: function(i) {
			if (i) {
				var
				src = i.src,
				oc = i.getAttribute('onclick');

				$(i).working('working/kokino.gif');
				i.setAttribute('onclick', '');
			}
			if ($('.pssHeaderInput').first().outerWidth() < 400) Prefadoros.pss.mazema();
			$('#emoticonColumn').animate({
				width: 0,
				'max-width': 0
			}, 150, function() {
				$(this).css({display: 'none'});
				Prefadoros.pss.aploma();
				if (i) {
					i.style.display = 'none';
					i.src = src;
					i.setAttribute('onclick', oc);
				}
				$('#CPemoticonShow').css({display: 'block'});
				Prefadoros.cpanel.flags.emoticon = false;
			});
		},
		c: function() { return Prefadoros.cpanel.flags.emoticon; }
	},

	debug: {
		t: 'Debugger window show/hide',
		i: 'images/cpanel/debug.png',
		a: function(i) { Client.debug.onOff(); }
	},

	resetdbg: {
		t: 'Clear debugger window',
		i: 'images/cpanel/resetdbg.png',
		a: function(i) { Client.debug.clear(); }
	},

	konsola: {
		t: 'Console window show/hide',
		i: 'images/cpanel/konsola.png',
		a: function(i) { Prefadoros.cpanel.omadaDixe('settings'); }
	},

	funchatShow: {
		t: 'Εμφάνιση παλέτας FunChat&copy;',
		i: 'images/emoticons/set1/xara.png',
		a: function(i) {
			Prefadoros.funchatLTWH = (Client.session.hasOwnProperty('funchatLTWH') &&
				Client.session.funchatLTWH.match(/^[0-9]+:[0-9]+:[0-9]+:[0-9]+$/)) ?
				Client.session.funchatLTWH.split(':') : [100, 100, 600, 400];
			
/*
alert('CPANEL: L = ' + Prefadoros.funchatLTWH[0] + ', T = ' + Prefadoros.funchatLTWH[1] +
	', W = ' + Prefadoros.funchatLTWH[2] + ', H = ' + Prefadoros.funchatLTWH[3]);
*/
			Prefadoros.funchatNeo = true;
			Prefadoros.cpanel.flags.funchat = window.open('funchat/index.php', '_blank',
				'resizeable=1,status=1,toolbar=0,location=1,menubar=0,scrollbars=1' +
				',left=' + Prefadoros.funchatLTWH[0] + ',top=' + Prefadoros.funchatLTWH[1] +
				',width=' + Prefadoros.funchatLTWH[2] + ',height=' + Prefadoros.funchatLTWH[3]);
			Prefadoros.cpanel.omadaDixe();
		},
		c: function() { return !Prefadoros.cpanel.flags.funchat; }
	},

	funchatHide: {
		t: 'Απόκρυψη παλέτας FunChat&copy;',
		i: 'images/emoticons/set1/glosa.png',
		a: function(i) {
			Prefadoros.cpanel.flags.funchat.close();
			Prefadoros.cpanel.flags.funchat = null;
			Prefadoros.cpanel.omadaDixe();
		},
		c: function() { return Prefadoros.cpanel.flags.funchat; }
	},

	adShow: {
		t: 'Εμφάνιση διαφημίσεων',
		i: 'images/cpanel/adsShow.png',
		a: function(i) {
			$(i).working();
			Diafimisi.onOff();
		},
		c: function() { return true; }
	},

	adHide: {
		t: 'Απόκρυψη διαφημίσεων',
		i: 'images/cpanel/adsHide.png',
		a: function(i) {
			$(i).working('working/kokino.gif');
			Diafimisi.onOff();
		},
		c: function() { return false; }
	},

	motdShow: {
		t: 'Εμφάνιση ενημερωτικού μηνύματος',
		i: 'images/cpanel/motdShow.png',
		a: function(i) {
			$(i).working();
			Motd.onOff();
		},
		c: function() { return true; }
	},

	motdHide: {
		t: 'Απόκρυψη ενημερωτικού μηνύματος',
		i: 'images/cpanel/motdHide.png',
		a: function(i) {
			$(i).working('working/kokino.gif');
			Motd.onOff();
		},
		c: function() { return false; }
	},

	paraskinio: {
		t: 'Αλλαγή παρασκηνίου',
		i: 'images/cpanel/paraskinio.png',
		a: function(i) {
			Client.paraskinio(i, 'CPparaskinio');
		},
		h: function() { return Client.paraskinioWindow; }
	},

	viewFull: {
		t: 'Πανοραμική άποψη καφενείου και παρτίδας',
		i: 'images/cpanel/viewFull.png',
		a: function(i) {
			var
			src = i.src,
			oc = i.getAttribute('onclick');

			$(i).working();
			i.setAttribute('onclick', '');
			Prefadoros.optiki.viewSetup(true);
			i.setAttribute('onclick', oc);
			i.src = src;
			Prefadoros.cpanel.omadaDixe();
		},
		c: function() {
			if (Prefadoros.ego.pektis.oxiDiaxiristis()) return false;
			return !Prefadoros.optiki.fullView;
		}
	},

	viewNormal: {
		t: 'Χωριστή άποψη καφενείου και παρτίδας',
		i: 'images/cpanel/viewNormal.png',
		a: function(i) {
			var
			src = i.src,
			oc = i.getAttribute('onclick');

			$(i).working();
			i.setAttribute('onclick', '');
			Prefadoros.optiki.viewSetup(true);
			i.setAttribute('onclick', oc);
			i.src = src;
			Prefadoros.cpanel.omadaDixe();
		},
		c: function() { return Prefadoros.optiki.fullView; }
	},

	striptiz: {
		t: 'Φύλλα αντιπάλων',
		i: 'images/cpanel/frog.png',
		a: function(i) {
			Prefadoros.tsoxa.striptiz();
		},
	},

	ataxia: {
		t: 'Τακτοποίηση περιοχών',
		i: 'images/cpanel/rubik.png',
		a: function(i) {
			Prefadoros.tsoxa.filaSetup();
			Prefadoros.tsoxa.panelSetup();
		},
	},

	entasi: {
		t: 'Ένταση ήχου: ' + Client.session.entasi,
		i: 'images/cpanel/entasi.png',
		a: function(i) {
			switch (Client.session.entasi) {
			case 'ΚΑΝΟΝΙΚΗ': Client.session.entasi = 'ΔΥΝΑΤΗ'; break;
			case 'ΔΥΝΑΤΗ': Client.session.entasi = 'ΣΙΩΠΗΛΟ'; break;
			case 'ΣΙΩΠΗΛΟ': Client.session.entasi = 'ΧΑΜΗΛΗ'; break;
			default: Client.session.entasi = 'ΚΑΝΟΝΙΚΗ'; break;
			}
			Prefadoros.cpanel.toolList.entasi.t = 'Ένταση ήχου: ' + Client.session.entasi;
			i.setAttribute('title', Prefadoros.cpanel.toolList.entasi.t);
			Client.fyi.pano(Prefadoros.cpanel.toolList.entasi.t);
			Client.sound.beep();
			Client.setCookie('entasi', Client.session.entasi);
		}
	},

	chatOn: {
		t: 'Απόκρυψη τραπεζιού/καφενείου',
		i: 'images/cpanel/chat.png',
		a: function(i) {
			var
			src = i.src,
			oc = i.getAttribute('onclick');

			$(i).working();
			i.setAttribute('onclick', '');
			Prefadoros.pss.mazema();

			$.when($('#kafenioColumn,#pexnidiColumn').finish().animate({
				opacity: 0,
				width: 0,
				maxWidth: 0,
			}, 500)).then(function() {
				$(this).css({display: 'none'});
				i.style.display = 'none';
				i.src = src;
				i.setAttribute('onclick', oc);
				$('#CPchatOff').addClass('ipodixi').css({display: 'block'});
				Prefadoros.cpanel.flags.chat = true;
				Prefadoros.pss.aploma();
			});
		},
		c: function() { return(!Prefadoros.cpanel.flags.chat); }
	},

	chatOff: {
		t: 'Εμφάνιση τραπεζιού/καφενείου',
		i: 'images/cpanel/prefadoros.png',
		a: function(i) {
			var src, oc, kp;
			if (!i) i = document.getElementById('CPchatOff');
			if (i) {
				src = i.src;
				oc = i.getAttribute('onclick');

				$(i).removeClass('ipodixi');
				$(i).working('working/kokino.gif');
				i.setAttribute('onclick', '');
			}

			
			if (Prefadoros.optiki.fullView) kp = $('#kafenioColumn,#pexnidiColumn');
			else {
				if (Prefadoros.optiki.optiki === 'Καφενείο') kp = $('#kafenioColumn');
				else kp = $('#pexnidiColumn');
			}
			kp.css({
				width: '1px',
				maxWidth: '1px',
				display: 'table-cell'
			});
			Prefadoros.pss.mazema();
			$.when(kp.css({display: 'table-cell'}).finish().animate({
				opacity: 1,
				width: '570px',
				maxWidth: '570px'
			}, 500)).then(function() {
				if (i) {
					i.style.display = 'none';
					i.src = src;
					i.setAttribute('onclick', oc);
				}

				$('#kafenioColumn,#pexnidiColumn').css({
					width: '570px',
					maxWidth: '570px'
				});
				$('#CPchatOn').css('display', 'block');
				Prefadoros.cpanel.flags.chat = false;
				Prefadoros.pss.aploma();
			});
		},
		c: function() { return Prefadoros.cpanel.flags.chat; },
		h: true
	},

	niofertos: {
		t: 'Απόκρυψη/εμφάνιση νεοφερμένων/περιφερομένων',
		i: 'images/cpanel/niofertosSwitch.png',
		a: function(i, exo) {
			var
			delay = 200,
			ii = $('#CPniofertos,#PLniofertos'),
			oc = i.getAttribute('onclick'),
			opc, vis, wrk, dis, ipo, pop;

			Prefadoros.cpanel.flags.niofertos = !Prefadoros.cpanel.flags.niofertos;
			if (Prefadoros.cpanel.flags.niofertos) {
				opc = 1;
				vis = 'visible';
				wrk = 'working/prasino.gif';
				dis = 'block';
				ipo = false;
				pop = 1;
				Prefadoros.cpanel.toolList.niofertos.t = 'Απόκρυψη νεοφερμένων και περιφερομένων';
				Prefadoros.cpanel.toolList.niofertos.h = false;
				$('#rebelosArea').css({display: dis});
				$('#niofertosArea').children().css({visibility: vis});
			}
			else {
				opc = 0;
				vis = 'hidden';
				wrk = 'working/kokino.gif';
				dis = 'none';
				ipo = true;
				pop = 0.5;
				Prefadoros.cpanel.toolList.niofertos.t = 'Εμφάνιση νεοφερμένων και περιφερομένων';
				Prefadoros.cpanel.toolList.niofertos.h = true;

			}

			ii.working(wrk);
			i.setAttribute('onclick', '');
			ii.css({opacity:pop}).attr({title:Prefadoros.cpanel.toolList.niofertos.t});
			$.when($('#rebelosArea,#niofertosArea').fadeTo(delay, opc)).done(function() {
				$('#niofertosArea').children().css({visibility: vis});
				$('#rebelosArea').css({display: dis});
				$(i).attr({ onclick: oc });
				ii.attr({src: 'images/cpanel/niofertosSwitch.png'});
				$('#kafenioData').scrollTop(0);
				if (ipo) {
					ii.addClass('ipodixi');
					$('#niofertosArea').on('mouseenter', function(e) {
						e.stopPropagation();
						ii.endixi();
					});
				}
				else {
					ii.removeClass('ipodixi');
					$('#niofertosArea').off('mouseenter');
				}
			});
		},
		h: function() { return !Prefadoros.cpanel.flags.niofertos; },
	},

	theatis: {
		t: 'Απόκρυψη/εμφάνιση θεατών',
		i: 'images/cpanel/theatisSwitch.png',
		a: function(i, exo) {
			var
			delay = 200,
			ii = $('#CPtheatis,#PLtheatis'),
			oc = i.getAttribute('onclick'),
			opc, vis, wrk, dis, ipo, pop;

			Prefadoros.cpanel.flags.theatis = !Prefadoros.cpanel.flags.theatis;
			if (Prefadoros.cpanel.flags.theatis) {
				opc = 1;
				vis = 'visible';
				wrk = 'working/prasino.gif';
				dis = 'block';
				ipo = false;
				pop = 1;
				Prefadoros.cpanel.toolList.theatis.t = 'Απόκρυψη θεατών';
				Prefadoros.cpanel.toolList.theatis.h = false;
				$('#theatisArea,.trapeziTheatisArea').css({display: dis});
				$('#theatisArea').children().css({visibility: vis});
			}
			else {
				opc = 0;
				vis = 'hidden';
				wrk = 'working/kokino.gif';
				dis = 'none';
				ipo = true;
				pop = 0.5;
				Prefadoros.cpanel.toolList.theatis.t = 'Εμφάνιση θεατών';
				Prefadoros.cpanel.toolList.theatis.h = true;

			}

			ii.working(wrk);
			i.setAttribute('onclick', '');
			ii.css({opacity:pop}).attr({title:Prefadoros.cpanel.toolList.theatis.t});
			$.when($('#theatisArea,.trapeziTheatisArea').fadeTo(delay, opc)).done(function() {
				$('#theatisArea').children().css({visibility: vis});
				$('.trapeziTheatisArea').css({display: dis});
				$(i).attr({ onclick: oc });
				ii.attr({src: 'images/cpanel/theatisSwitch.png'});
				if (ipo) {
					ii.addClass('ipodixi');
					$('#theatisArea').on('mouseenter', function(e) {
						e.stopPropagation();
						ii.endixi();
					});
				}
				else {
					ii.removeClass('ipodixi');
					$('#theatisArea').off('mouseenter');
				}
			});
		},
		h: function() { return !Prefadoros.cpanel.flags.theatis; },
	},

	exodos: {
		t: 'Έξοδος από το τραπέζι',
		i: 'images/cpanel/exodos.png',
		a: function(i) {
			var src, oc;

			if (!Prefadoros.cpanel.isTrapezi()) return;
			src = i.src;
			$(i).working();
			oc = i.getAttribute('onclick');
			i.setAttribute('onclick', '');
			Client.node('trapeziExodos', function(rsp) {
				Client.fyi.spano(rsp);
				$(i).attr({
					src: src,
					onclick: oc,
				});
			});
		},
		c: function() { return Prefadoros.ego.isTrapezi(); }
	},

	pektisTheatis: {
		t: 'Αλλαγή από παίκτης σε θεατής',
		i: 'images/cpanel/theatis.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'pektisTheatis'); },
		c: function() { return Prefadoros.ego.sinedria.isPektis(); }
	},

	theatisPektis: {
		t: 'Αλλαγή από θεατής σε παίκτης',
		i: 'images/cpanel/theatis.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'theatisPektis'); },
		c: function() {
			if (Prefadoros.ego.sinedria.oxiTheatis()) return false;
			if (Prefadoros.ego.trapezi.plires()) return false;

			// Από επόπτης και πάνω, μπορεί ο θεατής να γίνει παίκτης ακόμη και
			// απρόσκλητος.

			if (Prefadoros.ego.pektis.isEpoptis()) return true;
			if (Prefadoros.ego.trapezi.oxiProskeklimenos(Prefadoros.ego.login)) return false;

			// Ο παίκτης πληροί όλες τις προϋποθέσεις για να γίνει από θεατής
			// παίκτης. Αν, όμως, παίζει σε κάποιο άλλο τραπέζι δεν θα του το
			// επιτρέψουμε, παρά μόνο εαν είναι VIP.

			if (Prefadoros.ego.sinedria.pouthenaPektis()) return true;
			return Prefadoros.ego.pektis.isVip();
		}
	},

	apasxolimenos: {
		t: 'Απασχολημένος (τώρα είστε διαθέσιμος)',
		i: 'images/cpanel/apasxolimenos.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'katastasi'); },
		c: function() {return Prefadoros.ego.pektis.isDiathesimos(); }
	},

	diathesimos: {
		t: 'Διαθέσιμος (τώρα είστε απασχολημένος)',
		i: 'images/cpanel/diathesimos.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'katastasi'); },
		c: function() {return Prefadoros.ego.pektis.isApasxolimenos(); }
	},

	blockimage: {
		t: 'Πορνοπαγίδα',
		i: 'images/cpanel/blockimage.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'blockimage'); },
		c: function() {return Prefadoros.ego.pektis.letimage(); }
	},

	letimage: {
		t: 'Άρση πορνοπαγίδας',
		i: 'images/cpanel/letimage.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'blockimage'); },
		c: function() {return Prefadoros.ego.pektis.blockimage(); }
	},

	miaPrefa: {
		t: 'Μια πρέφα παρακαλώ!',
		i: 'images/cpanel/miaPrefa.png',
		a: function(i) {
			var
			src = i.src,
			oc = i.getAttribute('onclick');

			$(i).working();
			i.setAttribute('onclick', '');
			Client.node('miaPrefa', function(rsp) {
				Client.fyi.spano(rsp);
				$(i).attr({
					src: src,
					onclick: oc
				});
			});
		},
		c: function() {
			if (Prefadoros.ego.sinedria.oxiTrapezi()) return true;
			return Prefadoros.ego.pektis.isVip();
		}
	},

	roloi: {
		t: 'Κυκλική εναλλαγή παικτών',
		i: 'images/cpanel/roloi.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoRoloi'); },
		s: function(trapezi) { return trapezi; }
	},

	diataxi: {
		t: 'Αλλαγή διάταξης αντιπάλων',
		i: 'images/cpanel/diataxi.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoDiataxi'); },
		// Το πλήκτρο διάταξης έχει νόημα μόνο όταν υπάρχουν και
		// άλλοι παίκτες στο τραπέζι εκτός από τον διατάκτη.
		s: function(trapezi) {
			var cnt, thesi;

			cnt = 0;
			for (thesi in Prefadoros.thesiValid) {
				if (trapezi.pektis(thesi)) cnt++;
			}
			return(cnt > 1);
		}
	},

	kasa: {
		t: 'Αλλαγή κάσας',
		i: 'images/cpanel/kasa.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoKasa'); },
		s: function(trapezi) { return trapezi; }
	},

	paso: {
		t: 'Να παίζεται το πάσο, πάσο, πάσο',
		i: 'images/cpanel/pasoOn.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoPaso'); },
		s: function(trapezi) { return trapezi.oxiPaso(); }
	},

	osap: {
		t: 'Να μην παίζεται το πάσο, πάσο, πάσο',
		i: 'images/cpanel/pasoOff.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoPaso'); },
		s: function(trapezi) { return trapezi.isPaso(); }
	},

	asoi: {
		t: 'Να παίζονται οι άσοι',
		i: 'images/cpanel/asoiOn.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoAsoi'); },
		s: function(trapezi) { return trapezi.oxiAsoi(); }
	},

	iosa: {
		t: 'Να μην παίζονται οι άσοι',
		i: 'images/cpanel/asoiOff.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoAsoi'); },
		s: function(trapezi) { return trapezi.isAsoi(); }
	},

	filiki: {
		t: 'Εκπαιδευτική/φιλική παρτίδα',
		i: 'images/cpanel/filiki.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoFiliki'); },
		s: function(trapezi) { return trapezi.isAgonistiki(); }
	},

	agonistiki: {
		t: 'Αγωνιστική παρτίδα',
		i: 'images/cpanel/agonistiki.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoFiliki'); },
		s: function(trapezi) { return Prefadoros.ego.trapezi.isFiliki(); }
	},

	idioktito: {
		t: 'Έλεγχος μόνο από τον παίκτη στην πρώτη θέση',
		i: 'images/cpanel/idioktito.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoIdioktito'); },
		s: function(trapezi) {
			if (Prefadoros.ego.sinedria.oxiPektis()) return false;
			if (Prefadoros.ego.sinedria.thesi != 1) return false;
			if (Prefadoros.ego.pektis.oxiVip()) return false;
			return trapezi.isElefthero();
		}
	},

	elefthero: {
		t: 'Έλεγχος από όλους τους παίκτες του τραπεζιού',
		i: 'images/cpanel/elefthero.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoIdioktito'); },
		s: function(trapezi) { return trapezi.isIdioktito(); }
	},

	postelKanoniko: {
		t: 'Κανονική πληρωμή τελευταίας διανομής',
		i: 'images/cpanel/postel/kanoniko.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoPostel'); },
		s: function(trapezi) { return trapezi.teliomaDikeo(); }
	},

	postelAnisoropo: {
		t: 'Ανισόρροπη πληρωμή τελευταίας διανομής',
		i: 'images/cpanel/postel/anisoropo.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoPostel'); },
		s: function(trapezi) { return trapezi.teliomaKanoniko(); }
	},

	postelDikeo: {
		t: 'Δίκαιη πληρωμή τελευταίας διανομής',
		i: 'images/cpanel/postel/dikeo.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoPostel'); },
		s: function(trapezi) { return trapezi.teliomaAnisoropo(); }
	},

	epetiaki: {
		t: 'Επετειακή παρτίδα',
		i: 'images/cpanel/balonia.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoEpetiaki'); },
		s: function(trapezi) {
			if (Prefadoros.ego.pektis.oxiVip()) return false;
			return trapezi.oxiEpetiaki();
		}
	},

	ikaitepe: {
		t: 'Όχι επετειακή παρτίδα',
		i: 'images/cpanel/ainolab.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoEpetiaki'); },
		s: function(trapezi) { return trapezi.isEpetiaki(); }
	},

	prive: {
		t: 'Μετατροπή σε πριβέ',
		i: 'images/cpanel/prive.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoIdiotikotita'); },
		s: function(trapezi) {
			if (Prefadoros.ego.sinedria.oxiPektis()) return false;
			return trapezi.isDimosio();
		}
	},

	dimosio: {
		t: 'Μετατροπή σε δημόσιο',
		i: 'images/cpanel/dimosio.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoIdiotikotita'); },
		s: function(trapezi) {
			if (Prefadoros.ego.sinedria.oxiPektis()) return false;
			return trapezi.isPrive();
		}
	},

	klisto: {
		t: 'Να μην φαίνονται τα φύλλα στους θεατές',
		i: 'images/cpanel/klisto.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoKlisto'); },
		s: function(trapezi) { return trapezi.isAnikto(); }
	},

	anikto: {
		t: 'Να φαίνονται τα φύλλα στους θεατές',
		i: 'images/cpanel/anikto.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoKlisto'); },
		s: function(trapezi) { return trapezi.isKlisto(); }
	},

	motto: {
		t: 'Καφεδάκι',
		i: 'images/cpanel/kafedaki.png',
		a: function(i) {
			var
			src = i.src,
			oc = i.getAttribute('onclick');

			$(i).working();
			i.setAttribute('onclick', '');

			Client.ajax('motto/getMotto', function(rsp) {
				try {
					eval('Prefadoros.motto.dixe({' + rsp + '});');
				} catch(e) {}
				i.src = src;
				i.setAttribute('onclick', oc);
			});
		}
	},

	tip: {
		t: 'Χρήσιμες υποδείξεις',
		i: 'images/cpanel/lamp.png',
		a: function(i) {
			var
			src = i.src,
			oc = i.getAttribute('onclick');

			$(i).working();
			i.setAttribute('onclick', '');

			Client.ajax('motto/getMotto', 'arxio=../motto/tip.txt', function(rsp) {
				try {
					eval('Prefadoros.tip.dixe({' + rsp + '});');
				} catch(e) {}
				i.src = src;
				i.setAttribute('onclick', oc);
			});
		}
	},

	apodoxi: {
		t: 'Αποδοχή όρων παρτίδας',
		i: 'images/cpanel/check.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoApodoxi'); },
		s: function(trapezi) {
			var sinedria, ok, thesi;

			if (trapezi.isDianomi()) return false;
			sinedria = Prefadoros.ego.sinedria;
			if (trapezi.oxiPektis(sinedria.thesi)) return false;
			if (trapezi.apodoxi(sinedria.thesi)) return false;

			ok = 0;
			for (thesi in Prefadoros.thesiValid) {
				if (!trapezi.pektis(thesi)) continue;
				if (thesi == sinedria.thesi) continue;
				if (trapezi.apodoxi(thesi)) ok++;
			}

			return (ok < 2);
		}
	},

	ixodopa: {
		t: 'Διαπραγμάτευση όρων παρτίδας',
		i: 'images/cpanel/uncheck.png',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoApodoxi'); },
		s: function(trapezi) {
			if (trapezi.isDianomi()) return false;
			return trapezi.apodoxi(Prefadoros.ego.sinedria.thesi);
		}
	},

	ekinisi: {
		t: 'Αποδοχή όρων και εκκίνηση της παρτίδας',
		i: 'images/cpanel/go.jpg',
		a: function(i) { Prefadoros.cpanel.defaultAction(i, 'stisimoApodoxi'); },
		s: function(trapezi) {
			var sinedria, ok, thesi;

			if (trapezi.isDianomi()) return false;
			sinedria = Prefadoros.ego.sinedria;
			if (trapezi.oxiPektis(sinedria.thesi)) return false;
			if (trapezi.apodoxi(sinedria.thesi)) return false;

			ok = 0;
			for (thesi in Prefadoros.thesiValid) {
				if (!trapezi.pektis(thesi)) continue;
				if (thesi == sinedria.thesi) continue;
				if (trapezi.apodoxi(thesi)) ok++;
			}

			return (ok == 2);
		}
	},

	korna: {
		t: 'Κόρνα',
		i: 'images/cpanel/korna.png',
		a: function(i) {
			var trapezi = Prefadoros.cpanel.stisimoDikeoma();
			if (!trapezi) return Prefadoros.cpanel.omadaDixe();

			Prefadoros.sizitisi.trapeziJQL.sizitisiAdd(new Sizitisi({
				'pektis': Prefadoros.ego.login,
				'kimeno': '@KN@',
				'pote': 0,
			}));
			Prefadoros.cpanel.defaultAction(i, 'sizitisiSxolio',
				'kimeno=' + Prefadoros.sxolioKodikos.korna +
				'&trapezi=' + trapezi.kodikos);
		},
		s: function(trapezi) { return trapezi; }
	},

	bugfix: {
		t: 'Επιδιόρθωση προβλημάτων',
		i: 'images/cpanel/bugFix.png',
		a: function(i) {
			var
			src = i.src,
			oc = i.getAttribute('onclick');

			$(i).working();
			i.setAttribute('onclick', '');
			Client.fyi.pano('Επιδιόρθωση προβλημάτων. Παρακαλώ περιμένετε…');
			Prefadoros.feredata.ipovoli(true, function() {
				Client.fyi.pano();
				i.src = src;
				i.setAttribute('onclick', oc);
			});
		}
	}
};

Prefadoros.cpanel.isTrapezi = function() {
	if (Prefadoros.ego.isTrapezi()) return true;

	Client.fyi.epano('Δεν φαίνεστε ενταγμένος σε κάποιο τραπέζι');
	return false;
}

Prefadoros.cpanel.isPektis = function(msg) {
	if (Sinedria.isPektis()) return true;

	Client.fyi.epano('Δεν είστε παίκτης του τραπεζιού');
	return false;
}

Prefadoros.cpanel.omadaList = {
	basika: [
		//'adHide',
		//'motdHide',
		'emoticonShow',
		'emoticonHide',
		'motto',
		'tip',
		'roloi',
		'diataxi',
		'kasa',
		'apodoxi',
		'ixodopa',
		'ekinisi',
		'korna',
		'bugfix',
		'konsola',
	],
	deftera: [
		'apasxolimenos',
		'diathesimos',
		'blockimage',
		'letimage',
		'chatOn',
		'chatOff',
		'miaPrefa',
		'paso',
		'osap',
		'asoi',
		'iosa',
		'filiki',
		'agonistiki',
		'exodos',
	],
	stisimo: [
		'pektisTheatis',
		'theatisPektis',
		'niofertos',
		'theatis',
		'postelAnisoropo',
		'postelDikeo',
		'postelKanoniko',
		'idioktito',
		'elefthero',
		'prive',
		'dimosio',
		'klisto',
		'anikto',
		'epetiaki',
		'ikaitepe',
	],
	settings: [
		'funchatShow',
		'funchatHide',
		'viewFull',
		'viewNormal',
		'adShow',
		'motdShow',
		'debug',
		'resetdbg',
		'paraskinio',
		'striptiz',
		'ataxia',
		'entasi',
	],
};

Prefadoros.cpanel.omadaDixe = function(omada) {
	var html, i, tool;

	html = Prefadoros.cpanel.iconHTML('enalagi');
	if (omada === undefined) omada = Prefadoros.cpanel.omada;
	if (omada != 'basika') html += Prefadoros.cpanel.iconHTML('basika');
	for (i = 0; i < Prefadoros.cpanel.omadaList[omada].length; i++) {
		tool = Prefadoros.cpanel.omadaList[omada][i];
		if (!Prefadoros.cpanel.toolList.hasOwnProperty(tool)) continue;
		if (!Prefadoros.cpanel.toolList[tool].hasOwnProperty('i')) continue;
		html += Prefadoros.cpanel.iconHTML(tool);
	}
	if (omada != 'basika') html += Prefadoros.cpanel.iconHTML('akisab');

	$('#cpanel').html(html);
	Prefadoros.cpanel.omada = omada;
}

Prefadoros.cpanel.oplisate = function(img, yes) {
	if (yes) $(img).addClass('iconButtonOplisate');
	else $(img).removeClass('iconButtonOplisate');
}

Prefadoros.cpanel.iconHTML = function(tag) {
	var html = '', trapezi;

	html += '<img id="CP' + tag + '" class="cpanelIcon iconButton';
	if (Prefadoros.cpanel.toolList[tag].hasOwnProperty('h')) {
		if (jQuery.isFunction(Prefadoros.cpanel.toolList[tag].h)) {
			if (Prefadoros.cpanel.toolList[tag].h()) {
				html += ' ipodixi';
			}
		}
		else if (Prefadoros.cpanel.toolList[tag].h) {
			html += ' ipodixi';
		}
	}
	if (Prefadoros.cpanel.toolList[tag].r) { html += ' strofi' + Prefadoros.cpanel.toolList[tag].r; }
	html += '" src="' + Prefadoros.cpanel.toolList[tag].i +
		'" alt="" title="' + Prefadoros.cpanel.toolList[tag].t + '" ' +
		'onmouseover="Prefadoros.cpanel.oplisate(this, true);" ' +
		'onmouseout="Prefadoros.cpanel.oplisate(this, false);" ';
	if (Prefadoros.cpanel.toolList[tag].hasOwnProperty('a')) {
		html += 'onclick="Prefadoros.cpanel.toolList.' + tag + '.a(this); Prefadoros.input.apiko();" ';
	}
	if (Prefadoros.cpanel.toolList[tag].hasOwnProperty('s')) {
		trapezi = Prefadoros.cpanel.stisimoDikeoma();
		if ((!trapezi) || (!Prefadoros.cpanel.toolList[tag].s(trapezi)))
			html += 'style="display: none;"';
	}
	else if (Prefadoros.cpanel.toolList[tag].hasOwnProperty('c') &&
		(!Prefadoros.cpanel.toolList[tag].c())) {
		html += 'style="display: none;"';
	}
	html += '/>';
	return html;
}

// Ακολουθεί default action για πλήκτρα τα οποία καλούν κάποιο Node
// service και επιτελούν εργασίες στον server, χωρίς περαιτέρω τοπικές
// ενέργειες. Ως πρώτη παράμετρος δίνεται το ίδιο το πλήκτρο, ενώ ως
// δεύτερη παράμετρος δίνεται το όνομα του service. Αν το service
// απαιτεί παραμέτρους, μπορούμε να δώσουμε και τρίτη παράμετρο με τις
// επιθυμητές GET url παραμέτρους.

Prefadoros.cpanel.defaultAction = function(i, service, parameters) {
	var
	src = i.src,
	oc = i.getAttribute('onclick');

	$(i).working();
	i.setAttribute('onclick', '');

	if (parameters === undefined) parameters = '';
	Client.node(service, parameters, function(rsp) {
		if (rsp) Client.fyi.epano(rsp);
		i.src = src;
		i.setAttribute('onclick', oc);
	});
}

// Η function "stisimoDikeoma" επιστρέφει το τραπέζι στο οποίο μετέχει ο χρήστης
// εφόσον έχει δικαίωμα να ρυθμίσει θέματα του τραπεζιού είτε ως παίκτης είτε ως
// θεατής. Αν δεν υπάρχει συσχετισμένο τραπέζι, ή ο χρήστης δεν έχει δικαίωμα
// ρύθμισης στο τραπέζι, επιστρέφεται null.

Prefadoros.cpanel.stisimoDikeoma = function() {
	// Αν δεν υπάρχει συσχετισμένο τραπέζι δεν μπορούμε να ρυθμίσουμε κάτι.

	if (Prefadoros.ego.oxiTrapezi()) return null;

	if (Prefadoros.ego.trapezi.isDianomi()) return null;

	// Αν ο χρήστης είναι τουλάχιστον επόπτης, τότε μπορεί να ρυθμίσει θέματα
	// και από ιδιόκτητο τραπέζι και από άλλο τραπέζι.

	if (Prefadoros.ego.pektis.isEpoptis()) return Prefadoros.ego.trapezi;

	// Ο χρήστης δεν έχει ιδιαίτερα δικαιώματα, επομένως θα πρέπει να είναι
	// παίκτης του τραπεζιού για να μπορεί να κάνει ρυθμίσεις.

	if (Prefadoros.ego.sinedria.oxiPektis()) return null;

	// Υπάρχει περίπτωση το τραπέζι να είναι ιδιόκτητο, οπότε ο χρήστης θα
	// μπορεί να κάνει ρυθμίσεις μόνο εφόσον είναι ο παίκτης στη θέση 1.

	if (Prefadoros.ego.sinedria.thesi == 1) return Prefadoros.ego.trapezi;

	// Αν ο παίκτης δεν βρίσκεται στη θέση 1 και το τραπέζι είναι ιδιόκτητο,
	// δεν έχουμε δικαίωμα ρύθμισης.

	if (Prefadoros.ego.trapezi.isIdioktito()) return null;

	// Έχουμε περάσει όλους τους ελέγχους και φαίνεται να έχουμε δικαίωμα
	// ρύθμισης στο τραπέζι.

	return Prefadoros.ego.trapezi;
}

Prefadoros.cpanel.working = function(nai) {
	var x = $('#CPenalagi');
	if (!x.length) return;
	if (nai === undefined) nai = true;
	x.attr({src: nai ? 'images/working/default.gif' : 'images/cpanel/4Balls.png'});
}
